import { defineConfig } from "vite";
const { resolve } = require("path");
const fs = require("fs");
//handlebars模板引擎，以此支持html包含功能
import handlebars from "vite-plugin-handlebars";
//打包为es2015时，需要引入此包，不需要可以删除掉，且同步删除package.json中的@vitejs/plugin-legacy依赖
import legacy from "@vitejs/plugin-legacy";

//项目根目录
const rootdir = "src";
//约定： pages目录下只放html文件，一个文件为一个入口
const pagesdir = "pages";
//获取约定目录下的所有文件和目录
const files = fs.readdirSync(resolve(__dirname, rootdir, pagesdir));
//定义入口
let inputs = {
    index: resolve(__dirname, rootdir, "index.html"), //src下默认的index.html
};
//遍历目录下所有文件和目录，添加到inputs打包入口,这里没有添加过滤，约定pages下默认只有html文件
files.forEach(function (item, index) {
    let pagename = item.replace(".html", "");
    inputs[pagename] = resolve(__dirname, rootdir, pagesdir, item);
});

export default defineConfig({
    root: resolve(__dirname, rootdir), //指定项目根目录，不指定这个，打包后会多一层src目录
    build: {
        targets: "es2015", //打包为es2015
        rollupOptions: {
            input: inputs,
        },
        outDir: resolve(__dirname, "dist"), //打包输出目录
    },
    plugins: [
        //html文件包含插件
        handlebars({
            partialDirectory: resolve(__dirname, rootdir, "partials"),
            //经测试，这个配置项不起作用，partials里的文件变更后，浏览器不能重载，只能手动刷新才行
            reloadOnPartialChange: true,
        }),
        //打包为es2015的插件
        legacy({
            targets: ["ie >= 11"],
            additionalLegacyPolyfills: ["regenerator-runtime/runtime"],
        }),
    ],
});
